/**
 * @file shell_cfg_user.h
 * @author Letter (nevermindzzt@gmail.com)
 * @brief shell config
 * @version 3.0.0
 * @date 2019-12-31
 * 
 * @copyright (c) 2019 Letter
 * 
 */

#ifndef __SHELL_CFG_USER_H__
#define __SHELL_CFG_USER_H__

#include "main.h"

#if 0
#define     SHELL_TASK_WHILE                //是否使用默认shell任务while循环 
#define     SHELL_USING_CMD_EXPORT          //是否使用命令导出方式 
#define     SHELL_USING_COMPANION           //是否使用shell伴生对象功能 
#define     SHELL_SUPPORT_END_LINE          //是否支持shell尾行模式 
#define     SHELL_HELP_LIST_USER            //是否在输入命令列表中列出用户 
#define     SHELL_HELP_LIST_VAR             //是否在输入命令列表中列出变量 
#define     SHELL_HELP_LIST_KEY             //是否在输入命令列表中列出按键 
#define     SHELL_ENTER_LF                  //使用LF作为命令行回车触发 
#define     SHELL_ENTER_CR                  //使用CR作为命令行回车触发 
#define     SHELL_ENTER_CRLF                //使用CRLF作为命令行回车触发 
#define     SHELL_EXEC_UNDEF_FUNC           //使用执行未导出函数的功能 
#define     SHELL_COMMAND_MAX_LENGTH        //shell命令最大长度 
#define     SHELL_PARAMETER_MAX_NUMBER      //shell命令参数最大数量 
#define     SHELL_HISTORY_MAX_NUMBER        //历史命令记录数量 
#define     SHELL_DOUBLE_CLICK_TIME         //双击间隔(ms) 
#define     SHELL_QUICK_HELP                //快速帮助 
#define     SHELL_MAX_NUMBER                //管理的最大shell数量 
#define     SHELL_GET_TICK()                //获取系统时间(ms) 
#define     SHELL_USING_LOCK                //是否使用锁 
#define     SHELL_MALLOC(size)              //内存分配函数(shell本身不需要) 
#define     SHELL_FREE(obj)                 //内存释放函数(shell本身不需要) 
#define     SHELL_SHOW_INFO                 //是否显示shell信息 
#define     SHELL_CLS_WHEN_LOGIN            //是否在登录后清除命令行 
#define     SHELL_DEFAULT_USER              //shell默认用户 
#define     SHELL_DEFAULT_USER_PASSWORD     //默认用户密码 
#define     SHELL_LOCK_TIMEOUT              //shell自动锁定超时 

#endif

/**
 * @brief 是否使用shell伴生对象
 *        一些扩展的组件(文件系统支持，日志工具等)需要使用伴生对象
 */
#define     SHELL_USING_COMPANION       1


/**
 * @brief 支持shell尾行模式
 */
#define     SHELL_SUPPORT_END_LINE      1


/**
 * @brief 使用LF作为命令行回车触发
 *        可以和SHELL_ENTER_CR同时开启
 */
#define     SHELL_ENTER_LF              1

/**
 * @brief 使用CR作为命令行回车触发
 *        可以和SHELL_ENTER_LF同时开启
 */
#define     SHELL_ENTER_CR              1

/**
 * @brief 使用CRLF作为命令行回车触发
 *        不可以和SHELL_ENTER_LF或SHELL_ENTER_CR同时开启
 */
#define     SHELL_ENTER_CRLF            0

/**
 * @brief shell格式化输入的缓冲大小
 *        为0时不使用shell格式化输入
 * @note shell格式化输入会阻塞shellTask, 仅适用于在有操作系统的情况下使用
 */
//#define     SHELL_SCAN_BUFFER          0

/**
 * @brief 获取系统时间(ms)
 *        定义此宏为获取系统Tick，如`HAL_GetTick()`
 * @note 此宏不定义时无法使用双击tab补全命令help，无法使用shell超时锁定
 */
//#define     SHELL_GET_TICK()            HAL_GetTick()

/**
 * @brief 使用锁
 * @note 使用shell锁时，需要对加锁和解锁进行实现
 */
//#define     SHELL_USING_LOCK            0

/**
 * @brief shell内存分配
 *        shell本身不需要此接口，若使用shell伴生对象，需要进行定义
 */
#define     SHELL_MALLOC(size)          malloc(size)

/**
 * @brief shell内存释放
 *        shell本身不需要此接口，若使用shell伴生对象，需要进行定义
 */
#define     SHELL_FREE(obj)             free(obj)




#endif



